# server/utils.py
import random
import logging
from hashlib import sha256
from typing import Optional

def generate_request_id() -> str:
    """生成一个唯一的请求ID。
    使用高随机性的算法，确保在并发环境下也不会产生冲突。
    """
    try:
        # 假设这里使用了一个高效的随机数生成器和算法来构造请求ID
         requestID = str(random.randint(100000, 999999))
         return sha256(str(requestID).encode('utf-8')).hexdigest()
    except Exception as e:
        logging.error(f"生成请求ID时发生错误: {e}")
        raise

def handle_error(error: Exception, request_id: Optional[str] = None) -> None:
    """处理程序运行时发生的错误。
    记录错误日志，并且如果提供了请求ID，则将它包含在日志中。
    """
    try:
        if request_id:
            logging.error(f"请求ID: {request_id}，发生错误: {error}")
        else:
            logging.error(f"发生错误: {error}")
    except Exception as e:
        # 处理日志记录过程中的异常，确保不影响程序的继续执行
        logging.error(f"记录错误日志时发生异常: {e}")

